import tkinter as tk
from tkinter import ttk

from .base_window import BaseWindow
from .control_manager import ControlManager
from .field_manager import FieldManager
from .menu_manager import MenuManager
from .result_manager import ResultManager
from .source_manager import SourceManager


class MainWindow(
    BaseWindow,
    FieldManager,
    SourceManager,
    ResultManager,
    MenuManager,
    ControlManager,
):
    """主窗体类"""

    def __init__(self):
        super().__init__()
        # 初始化数据源管理器时传入主窗口实例
        self.source_manager = SourceManager(self.window)
        self._create_menu()
        self._init_ui()

    def _init_ui(self):
        """初始化UI布局"""
        # 创建字段管理区域
        self._create_fields_frame(self.window)

        # 创建数据源配置区域
        self._create_source_frame(self.window)

        # 创建控制区域
        self._create_control_frame(self.window)

        # 创建结果显示区域
        self._create_result_frame(self.window)

    def _on_export_result(self, file_ext: str):
        """导出对比结果"""
        self.result_tree._on_export_result(file_ext)

    def _create_control_frame(self, parent):
        """创建控制区域"""
        control_frame = ttk.Frame(parent)
        control_frame.pack(fill=tk.X, padx=10, pady=5)

        # 创建控制管理器
        self.control_manager = ControlManager(control_frame, self)
        self.control_manager.pack(fill=tk.X, expand=True)

        return control_frame
